How I Evolved your Fuzzer: Techniques for Black-Box Evolutionary Fuzzing
نویسنده
چکیده
Fuzz testing is an active testing technique which consists in automatically generating and sending malicious inputs to an application in order to hopefully trigger a vulnerability. Fuzzing entails such questions as: Where to fuzz? Which parameter to fuzz? What kind of anomaly to introduce? Where to observe its effects? etc. Different test contexts depending on the degree of knowledge assumed about the target: recompiling the application (white-box), interacting only at the target interface (blackbox), dynamically instrumenting a binary (grey-box). In this paper, we focus on black-box test contest, and specifically address the questions: How to obtain a notion of coverage on unstructured inputs? How to capture human testers intuitions and use it for the fuzzing? How to drive the search in various directions? We specifically address the problems of detecting Memory Corruption in PDF interpreters and Cross Site Scripting (XSS) in web applications. We detail our approaches which use genetic algorithm, inference and anti-random testing. We empirically evaluate our implementations of XSS fuzzer KameleonFuzz and of PDF fuzzer ShiftMonkey.
منابع مشابه
SNOOZE: Toward a Stateful NetwOrk prOtocol fuzZEr
Fuzzing is a well-known black-box approach to the security testing of applications. Fuzzing has many advantages in terms of simplicity and effectiveness over more complex, expensive testing approaches. Unfortunately, current fuzzing tools suffer from a number of limitations, and, in particular, they provide little support for the fuzzing of stateful protocols. In this paper, we present SNOOZE, ...
متن کاملComfortFuzz: The Smartest Dumb Fuzzer
Fuzzers are tools used to test an application for bugs, especially exploitable bugs such as integer overflow errors, using modified user inputs randomly distributed over the whole potential input space. The earliest fuzzers were so-called ”black box” fuzzers, which simply randomly generate inputs and pass them through to the program without any other tricks. Fuzzing was substantially improved b...
متن کامل0-knowledge fuzzing
Nowadays fuzzing is a pretty common technique used both by attackers and software developers. Currently known techniques usually involve knowing the protocol/format that needs to be fuzzed and having a basic understanding of how the user input is processed inside the binary. In the past since fuzzing was little-used obtaining good results with a small amount of effort was possible. Today findin...
متن کاملPractical considerations of fuzzing: generating insight into areas of risk.
For an introduction to the motivations and concepts of fuzzing, please see the article by Baker1 on page 42 of this issue of Horizons. Additional background on fuzzing also has been reported previously.2 If you read the the article by Baker, you are probably convinced that fuzzing is a crucial part of any software development life cycle or validation and verification process. What now? How can ...
متن کاملAngora: Efficient Fuzzing by Principled Search
Fuzzing is a popular technique for finding software bugs. However, the performance of the state-of-the-art fuzzers leaves a lot to be desired. Fuzzers based on symbolic execution produce quality inputs but run slow, while fuzzers based on random mutation run fast but have difficulty producing quality inputs. We propose Angora, a new mutation-based fuzzer that outperforms the state-of-the-art fu...
متن کامل